//
// Created by arnold on 10/28/2018.
//

#ifndef EP_MAIN_APP_EP_GPIO_H
#define EP_MAIN_APP_EP_GPIO_H

#include "comm.h"

typedef enum {
    EP_GPIO_NONE,
    EP_GPIO_IN,
    EP_GPIO_OUT
}ep_gpio_dir;

/* returns -1 or the file descriptor of the gpio value file */
EP_INT ep_gpio_export(EP_INT gpio);
/* Set direction to 2 = high output, 1 low output, 0 input */
EP_INT ep_gpio_direction(EP_INT gpio, ep_gpio_dir dir);
/* Release the GPIO to be claimed by other processes or a kernel driver */
EP_VOID ep_gpio_unexport(EP_INT gpio);
/* Single GPIO read */
EP_INT ep_gpio_read(EP_INT fd);
/* Set GPIO to val (1 = high) */
EP_INT ep_gpio_write(EP_INT fd, EP_INT val);
/* Set which edge(s) causes the value select to return */
EP_INT ep_gpio_setedge(EP_INT gpio, EP_BOOL rising, EP_BOOL falling);

EP_INT ep_gpio_open(EP_INT gpio);

EP_VOID ep_gpio_close (EP_INT fd);


#endif //EP_MAIN_APP_EP_GPIO_H
